import java.util.ArrayList;
import java.util.List;


public class Res {
    static List<List<Integer>> res = new ArrayList<>();
    static List<Integer> list = new ArrayList<>();

    public static void main(String[] args) {
        List<List<Integer>> ans = new ArrayList<List<Integer>>();
        ans = permute(new int[]{1,2,3});

    }



    public static List<List<Integer>> permute(int[] nums) {

        for (int i = 0; i < nums.length; i++) {
            int[] used = new int[nums.length];
            used[i] = 1;
            list.add(nums[i]);
            back(nums, used);
            list.remove(0);
            used[i]=0;
        }
        return res;
    }

    private static void back(int[] nums, int[] used) {
        if (list.size() == nums.length) {
            res.add(list);
            return ;
        }
        for (int i = 0; (i < nums.length) && used[i] != 1; i++) {
            list.add(nums[i]);
            used[i]=1;
            back(nums,used);
            list.remove(list.size()-1);
            used[i]=0;
        }
    }
}
